/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.edu.itschapala.sistemas.septimo.control;

import java.util.ArrayList;
import java.util.List;
import mx.edu.itschapala.sistemas.septimo.modelo.Producto;
import mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda;
import static mx.edu.itschapala.sistemas.septimo.vista.enumeracion.TipoBusqueda.INICIAR;

/**
 *
 * @author alex
 */
public class ProductoLnLista implements ProductoLnLocal {

    private List<Producto> lista = new ArrayList<Producto>();

    public void registrar(Producto producto) {
        lista.add(producto);
    }

    public void modificar(Producto producto) {
        Producto tmp = buscarPorCodigo(producto.getCodigo());
        if (tmp != null) {
            lista.remove(tmp);
            lista.add(producto);
        }

    }

    public void eliminar(Producto producto) {
        Producto tmp = buscarPorCodigo(producto.getCodigo());
        if (tmp != null) {
            lista.remove(tmp);
        }

    }

    public Producto buscarPorCodigo(int codigo) {
        Producto tmp = null;
        for (Producto p : lista) {
            if (p.getCodigo() == codigo) {
                tmp = p;
            }
        }
        return tmp;

    }

    public List<Producto> getTodos() {
        return lista;
    }

    public List<Producto> getPorNombre(String Nombre, TipoBusqueda Criterio) {
        List<Producto> tmp = new ArrayList<Producto>();
        switch (Criterio) {
            case INICIAR:
                for (Producto p : lista) {
                    if (p.getNombre().startsWith(Nombre)) {
                        tmp.add(p);
                    }
                }
                break;
            case CONTIENE:
                for (Producto p : lista) {
                    if (p.getNombre().startsWith(Nombre)) {
                        tmp.add(p);
                    }
                }
                break;

        }
        return tmp;
    }
}
